package com.agritech.strategy;

import com.agritech.environment.EnvironmentData;
import com.agritech.path.PathPlan;

/**
 * 路径规划策略接口
 * 策略模式：定义一系列算法，将每一个算法封装起来，并让它们可以相互替换
 */
public interface PathPlanningStrategy {
    
    /**
     * 根据环境数据和其他参数计算路径规划
     * 
     * @param environmentData 环境数据
     * @param startX 起始点X坐标
     * @param startY 起始点Y坐标
     * @param endX 目标点X坐标
     * @param endY 目标点Y坐标
     * @param obstacles 障碍物坐标数组，每个障碍物由[x, y]表示
     * @return 路径规划结果
     */
    PathPlan calculatePath(EnvironmentData environmentData, 
                           double startX, double startY, 
                           double endX, double endY, 
                           double[][] obstacles);
    
    /**
     * 获取策略名称
     * @return 策略名称
     */
    String getStrategyName();
}